iT邦幫忙

2022 iThome 鐵人賽

DAY 1
2
Modern Web

資料庫也有版本控制系列 第 1

Day 1 : 為什麼需要幫資料庫做版本控制

  • 分享至 

  • xImage
  •  

在軟體開發的過程中,我們時常使用版本控制工具來幫助我們搞清楚目前手上正在看的程式碼是否包含著最新的功能,其中最主流且成熟的版本控制工具是 Git ,他也有著豐富的生態系可以搭配使用,如程式碼託管平台如 Github、Gitlab 與 Git GUI 管理工具如 SourceTree、GitKraken,搭配著這些工具我們可以輕鬆做到多人開發與統一程式碼的版本,解決了程式碼分散與難以還原修改前程式碼的問題

而在程式開發上遇到的問題,資料庫的變更也會遇到,後端應用程式開發時,大部分的功能都必須仰賴資料庫來儲存資料,而使用關聯式資料庫時我們會需要先定義好資料表的結構後才能進行操作,也會有在資料庫裡面撰寫 SP、View 的可能性,當程式使用到了目前資料庫還不存在的欄位或者功能就會發生錯誤,因此將資料庫的變更也一並納入版本控制是一件重要的事情

而本次的鐵人賽我將會利用 30 天的時間,將重點圍繞在資料庫實現版本控制可以使用的方法、工具與其會遇到的架構問題進行討論與實際操作

將會有以下篇章

一、版本控制介紹

  1. Day 2 : 應用程式的版本控制與自動化部屬流程
  2. Day 3 : 資料庫版控的原理與方法
  3. Day 4 : 資料庫的版本控制與自動化部屬流程

二、資料庫版本控制的語法

  1. Day 5 : 基於 SQL 語法的資料庫版本控制
  2. Day 6 : 基於 ORM 語法的資料庫版本控制
  3. Day 7 : 基於 SQL 與 ORM 語法的資料庫版本控制差異

三、資料庫版本控制的工具

  1. Day 8 : 各語言的 ORM 提供的 Migration 方案
  2. Day 9 : 第三方獨立工具 Migration 方案

四、解決進行資料庫版控會遇到的問題

  1. Day 10 : 多個系統使用的同一個資料庫時要如何做版本變更
  2. Day 11 : 不共享資料庫會造成的問題
  3. Day 12: 使用 API First 的概念解決共享問題
  4. Day 13 : 資料庫如何退回之前的版本
  5. Day 14 : 如何處理資料表中被刪除或更名的欄位
  6. Day 15 : 資料表降級時如何處理資料庫中被刪除的欄位

五、實際操作

  1. Day 16 : 透過簡易的書店 API 來進行資料庫的版本控制
  2. Day 17 : 透過 Entity Framework Core Migration 來進行資料庫的版本控制
  3. Day 18 : 透過 Entity Framework Core Migration 對資料庫進行修改
  4. Day 19 : 將 Entity Framework Core Migration 異動同步上 git
  5. Day 20 : 將 Entity Framework Core Migration 流程套入 CI/CD 流程中
  6. Day 21 : 透過 Entity Framework Core Migration 進行退版
  7. Day 22 : 透過 Flyway 來進行資料庫的版本控制
  8. Day 23 : 透過 Flyway 對資料庫進行修改
  9. Day 24 : 透過 Flyway 異動同步上 git
  10. Day 25 : 將 Flyway 套入 CI/CD 流程中
  11. Day 26 : 透過 Flyway 進行退版
  12. Day 27 : Entity Framework Core Migration vs Flyway

六、不同資料庫間的資料表遷移

  1. Day 28 : 在不同資料庫間做遷移的方法
  2. Day 29 : 實際透過 Entity Framework Core Migration 與 Flyway 做不同資料庫的遷移

七、總結

Day 30 : 資料庫做版本控制的總結

將會介紹的工具列表

  1. Flyway
  2. Liquibase
  3. Entity Framework Core Migration
  4. Laravel Migration
  5. sequelize

將會示範的專案

我將會實現一個具有 CRUD 功能的簡單書店服務 API 來進行版本控制流程的模擬,會有以下兩種版本的實現

  1. 使用 Flyway 來對 書店 API 進行資料庫遷移與 CI/CD
  2. 使用 Entity Framework Core Migration 來對 書店 API 進行資料庫遷移與 CI/CD

將會解決的問題

  1. 多個服務共用同一個資料庫
  2. 當新的功能需要刪除某個欄位,但上線時需要做到程式的版本退回
  3. 在不同種類的資料庫中進行資料表遷移
  4. 使用 ORM 還是 SQL 語法的版本遷移會更好

後續預告

接下來會花三天的時間,來介紹應用程式與資料庫的版本控制方法與自動化部屬的流程

  1. Day 2 : 應用程式的版本控制與自動化部屬流程
  2. Day 3 : 資料庫版控的原理與方法
  3. Day 4 : 資料庫的版本控制與自動化部屬流程

下一篇
Day 2 : 應用程式的版本控制與自動化部屬流程
系列文
資料庫也有版本控制30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言